package com.tx.core.ddlutil.model;

import java.util.List;

/**
 * 获取表定义<br/>
 * <功能详细描述>
 * getTables
 * TABLE_CAT String => 表类别（可为 null）
 * TABLE_SCHEM String => 表模式（可为 null）
 * TABLE_NAME String => 表名称
 * TABLE_TYPE String => 表类型。典型的类型是 "TABLE"、"VIEW"、"SYSTEM TABLE"、"GLOBAL TEMPORARY"、"LOCAL TEMPORARY"、"ALIAS" 和 "SYNONYM"。
 * REMARKS String => 表的解释性注释
 * TYPE_CAT String => 类型的类别（可为 null）
 * TYPE_SCHEM String => 类型模式（可为 null）
 * TYPE_NAME String => 类型名称（可为 null）
 * SELF_REFERENCING_COL_NAME String => 有类型表的指定 "identifier" 列的名称（可为null）
 * REF_GENERATION String => 指定在 SELF_REFERENCING_COL_NAME 中创建值的方式。这些值为 "SYSTEM"、"USER" 和 "DERIVED"。（可能为null）
 * <p>
 * getPrimaryKeys
 * TABLE_CAT String => 表类别（可为 null）
 * TABLE_SCHEM String => 表模式（可为 null）
 * TABLE_NAME String => 表名称
 * COLUMN_NAME String => 列名称
 * KEY_SEQ short => 主键中的序列号
 * PK_NAME String => 主键的名称（可为 null）
 *
 * @author Administrator
 * @version [版本号, 2016年10月24日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public interface TableDef {

    /**
     * 获取表模式
     *
     * @return
     */
    public abstract String getSchema();

    /**
     * 获取表目录
     *
     * @return
     */
    public abstract String getCatalog();

    /**
     * 获取表名
     *
     * @return
     */
    public abstract String getName();


    /**
     * 获取表注释
     *
     * @return
     */
    public abstract String getComment();

    /**
     * 获取表对应的主键<br/>
     *
     * @return
     */
    public abstract String getPrimaryKey();


    /**
     * @return 返回 columns
     */
    public abstract List<? extends TableColumnDef> getColumns();

    /**
     * @return 返回 indexes
     */
    public abstract List<? extends TableIndexDef> getIndexes();

}